'use strict';

const Service = require('egg').Service;

class CategoryService extends Service {

  // 创建
  async create(body) {
    const { ctx } = this;
    const result = await ctx.model.Category.create(body);
    return result ? 'success' : 'fail';
  }

  // 更新
  async update({
    id,
    category_name,
    category_cover,
    description,
    keyword,
    pid,
    is_page,
    create_at,
    update_at,
  }) {
    const { ctx } = this;
    const result = await ctx.model.Category.update({
      id,
      category_name,
      category_cover,
      description,
      keyword,
      pid,
      is_page,
      create_at,
      update_at,
    }, {
      where: {
        id,
      },
    });
    return result ? 'success' : 'fail';
  }

  // 删除
  async delete(id) {
    const { ctx } = this;
    const result = await ctx.model.Category.destroy({
      where: {
        id,
      },
    });
    return result === 0 ? 'fail' : 'success';
  }

  // 查找栏目
  async find() {
    const { ctx } = this;
    const list = await ctx.model.Category.findAndCountAll({
      orders: [
        [ 'id', 'desc' ],
      ],
    });
    return list;
  }

  // 查栏目
  async findId(id) {
    const { ctx } = this;
    const result = await ctx.model.Category.findOne({
      where: {
        id,
      },
    });
    return result;
  }

  // 查子类目
  async findSubId(pid) {
    const { ctx } = this;
    const result = await ctx.model.Category.findOne({
      where: {
        pid,
      },
    });
    return result;
  }
  // async find(data) {
  //   return await this.ctx.model.Category.findOne({
  //     where: data,
  //   });
  // }
  //
  // async findAll(page) {
  //   return await this.ctx.model.Category.findAndCountAll({
  //     limit: 10,
  //     offset: 10 * (page - 1),
  //   });
  // }
  //
  // async findDefault(data) {
  //   return await this.ctx.model.Category.findAll({
  //     where: data,
  //   });
  // }
  //
  // async create(category) {
  //   return await this.ctx.model.Category.upsert(category);
  // }
}

module.exports = CategoryService;
